package ExceptionAndThread.Exception01;


/*
    如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。

    父类方法没有抛出异常，子类重写父类该方法时也不可抛出异常。此时子类产生该异常，只能捕获处理，不能声明抛出
*/
public class ExceptionExtends {
    public void method1() throws NullPointerException, ClassCastException {
    }

    ;

    public void method2() throws IndexOutOfBoundsException {
    }

    ;

    public void method3() throws IndexOutOfBoundsException {
    }

    ;

    public void method4() {
    }

    ;
}

class zi extends ExceptionAndThread.Exception01.ExceptionExtends {
    //如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常
    @Override
    public void method1() throws NullPointerException, ClassCastException {
    }

    ;

    //如果父类抛出了多个异常,子类重写父类方法时,抛出父类异常的子类
    @Override
    public void method2() throws ArrayIndexOutOfBoundsException {
    }

    ;

    //如果父类抛出了多个异常,子类重写父类方法时不抛出异常。
    @Override
    public void method3() {
    }

    ;

    //父类方法没有抛出异常，子类重写父类该方法时也不可抛出异常
    // @Override
    // public void method4(){};

    //此时子类产生该异常，只能捕获处理，不能声明抛出
    @Override
    public void method4() {
        try {
            //可能产生异常的语句
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    ;

}

